package com.jmonkey.office.help;
// Swing Imports
import java.awt.BorderLayout;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import com.jmonkey.office.lexi.support.images.Loader;
public class OfficeHelp extends JFrame {
//static URL backURL = null;
//static URL forURL = null;
//htmlFrame hFrame;
private String start_loc = null;
//protected Browser iceBrowser;
private Class iceClass;
private JComponent iceBrowser;
public OfficeHelp(String helpFile) {
super("Program Help");
this.setIconImage(Loader.load("help_book16.gif"));
this.getContentPane().setLayout(new BorderLayout());
start_loc = "http://www.jmonkey.com/~mschmidt/help/" + helpFile + "/index.html";
try {
iceClass = Class.forName("ice.iblite.Browser");
iceBrowser = (JComponent) iceClass.newInstance();
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Can't find class ice.iblite.Browser\n" + " put icebrowserlist.jar in your CLASSPATH", "Can't find class ice.iblite.Browser", JOptionPane.WARNING_MESSAGE);
}
this.getContentPane().add("Center",iceBrowser);
Object[] args = {start_loc};
iceMethodCall("gotoLocation", args);
//iceBrowser.gotoLocation(start_loc);
}
/**
* Use this so that you don't need the iceBrowser classes at
* compile. This code is taken from the Jazilla project, but
* might also be in the IceBrowser Demos
*/
private Object iceMethodCall(String methodName, Object[] args) {
// Figure the Class of each element of args[]:
Class[] parameterTypes = new Class[args.length];
for (int i=0; i<args.length; i++) {
parameterTypes[i] = args[i].getClass();
}
try {
Method method = iceClass.getMethod(methodName, parameterTypes);
return (method.invoke(iceBrowser, args));
}
catch (NoSuchMethodException e) {
JOptionPane.showMessageDialog(null, "No such method in ice.iblite.Browser: " + methodName, "Warning", JOptionPane.WARNING_MESSAGE);
}
catch (InvocationTargetException e) {
JOptionPane.showMessageDialog(null, "InvocationTargetException in call to: " + methodName, "Warning", JOptionPane.WARNING_MESSAGE);
}
catch (IllegalAccessException e) {
JOptionPane.showMessageDialog(null, "IllegalAccessException in call to: " + methodName, "Warning", JOptionPane.WARNING_MESSAGE);
}
return null;
}
private void redirectOutput() {
try {
FileOutputStream fileOut = new FileOutputStream("Output.txt", true);
PrintStream thePrintStream = new PrintStream(fileOut);
System.setOut(thePrintStream);
System.setErr(thePrintStream);
} catch (java.io.IOException ex) {
System.out.println("Error writing: " + ex);
//Code.failed(ex);
}
}
}